<h1 align="center">tg-hydrus-import-bot</h1>

<p align="center"><b>Бот для Telegram, позволяющий проводить импорт в Hydrus Network, посредством самого мессенджера.</b></p>

Обращаясь к боту внутри Телеграма, можно сохранять в своём запущенном экземпляре [Гидруса](https://github.com/hydrusnetwork/hydrus) изображения, видео, аудио, голосовые и видеосообщения (кружочки), а также документы.<br>
К тому же бот пытается импортировать в Гидрус отправляемые ссылки, как если бы импорт проводился непосредственно в клиенте Гидруса. Также контент, полученный ссылками, возвращается ответным сообщением.<br>
Сопутствующие хештеги также обрабатываются как теги к присланному контенту (нижнее подчёркивание заменяется пробелом, концом тега считается символ перед пробелом).

## Запуск
После скачивания репозитория скопируйте образец [файла настроек](#файл-настроек) `.conf.json.example`, переименуйте в `.conf.json` и установите настройки.<br>
Обязательно установите зависимости в ваше окружение python: `python -m pip install -r requirements.txt`<br>
Перед запуском бота убедитесь, что у вас запущен [Hydrus Network](https://github.com/hydrusnetwork/hydrus), а также создан токен с [нужными правами](#права-доступа-hydrus).<br>
Команда `python tg-hydrus-import-bot` в каталоге репозитория запустит бота, после чего сразу можно заниматься импортом.

#### Файл настроек
---
**Файл настроек располагается в рабочей директории, носит имя `.conf.json` и может редактироваться прямо в блокноте**<br>
Настройки:
* `TG_ADMIN_ID`: <u>список</u> идентификаторов пользователей Телеграма, кому разрешено отправлять контент в ваш экземпляр Гидруса. Обратите внимание, что это именно список, поэтому все числовые идентификаторы должны быть перечислены внутри квадратных скобок.
* `TG_BOT_TOKEN`: токен телеграм-бота, берётся при создании бота у [@BotFather](https://t.me/BotFather)
* `HYDRUS_TOKEN`: токен Hydrus API, берётся в клиенте: services -> review services -> local -> client api -> add
* `TIME_TO_SLEEP`: время в секундах, которое ожидает программа в случае сбоя
* `TAGS_NAMESPACE`: пространство тегов Гидруса, в которое эти теги и записываются
* `DESTINATION_PAGE_NAME`: название страницы в клиенте Гидруса, на которую отправляются импортированные файлы
* `TEMP_PATH`: путь к папке временных файлов
* `CONTENT_TYPES`: типы контента, которые бот будет обрабатывать, допустимые типы: `[ "photo", "video", "animation", "video_note", "audio", "voice", "document", "text" ]`

#### Права доступа Hydrus
---
**Для корректной работы бота необходимо токену выставить права**<br>
После каждого права указано, для чего оно нужно
* `edit file tags` : 
  * `/get_service` - получение внутреннего ключа пространства тегов
  * `/add_tags/clean_tags` - преобразование тегов к «чистому» виду
  * `/add_urls/add_url` - добавление тегов сразу при импорте контента по ссылке
  * `/add_tags/add_tags` - добавление тегов
* `import and delete files` : 
  * `/add_files/add_file` - загрузка файлов в Гидрус
* `import and edit urls` : 
  * `/add_urls/get_url_files` - проверка статуса существования контента по ссылке (необходимо для проставления новых тегов существующему файлу)
  * `/add_urls/add_url` - импорт контента по ссылке
  * `/add_urls/associate_url` - приписывание ссылки к загруженному в Гидрус файлу обычным способом
* `manage pages` : 
  * `/manage_pages/get_pages` - получение списка страниц в клиенте для поиска нужной
  * `/manage_pages/add_files` - помещение импортированного файла на страницу в клиенте
* `search and fetch files` : 
  * `/get_files/file` - непосредственное получение скачанного по ссылке файла для отправки в ответ

Непредоставление токену этих прав урежет возможности бота на вышеперечисленные.
